package top.lixunda.ecommerce.server.user.api.entity.db;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 *
 * </p>
 *
 * @author Xumda
 * @since 2019-11-19
 */
@SuppressWarnings({"WeakerAccess", "unused"})
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("log_login")
public class LogLoginDO extends Model<LogLoginDO> {

    private static final long serialVersionUID = 1L;

    /**
     * 登陆是否成功，1表示成功
     */
    public static final int SUCCESS = 1;

    /**
     * 登陆是否成功，0表示不成功
     */
    public static final int NOT_SUCCESS = 0;
    
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户唯一官方账号
     */
    @TableField("account_id")
    private Integer accountId;

    /**
     * 登陆方式
     */
    @TableField("binding_type_id")
    private Integer bindingTypeId;

    /**
     * 验证方式
     */
    @TableField("verify_type")
    private String verifyType;

    /**
     * 登陆时间
     */
    @TableField("time")
    private LocalDateTime time;

    /**
     * 登陆地点，城市名称
     */
    @TableField("city")
    private String city;

    /**
     * 登陆ip地址
     */
    @TableField("ip_addr")
    private String ipAddr;

    /**
     * 电脑物理地址
     */
    @TableField("physical_addr")
    private String physicalAddr;

    /**
     * 该次登陆是否成功
     */
    @TableField("success")
    private Integer success;

    /**
     * 备注信息
     */
    @TableField("remark")
    private String remark;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    /**
     * 登陆是否成功
     *
     * @return 是否成功
     */
    public boolean loginSuccess() {
        return SUCCESS == this.success;
    }

    /**
     * 登陆是否不成功
     * 使用loginSuccess，success属性不为NOT_SUCCESS不代表就一定成功，可能为null
     *
     * @return 是否不成功
     */
    public boolean notLoginSuccess() {
        return !loginSuccess();
    }
}
